Roaming personal information items across multiple computing devices using an IMAP server

ABSTRACT

Technologies for roaming personal information items across multiple computing devices using an IMAP server are provided. When a change is detected to a personal information item maintained by a PIM program one computing device, the data representing the personal information item is uploaded from the computing device to an IMAP server, where it is stored as a message in a user mailbox designated to hold personal information items. A second computing device then downloads the message storing the data representing the personal information item from the IMAP server and makes it available to a PIM program executing on the second computing device.

BACKGROUND

A user may utilize multiple computing devices to view and maintaine-mail and personal information items, such as contacts, calendar items,tasks, notes, and journal entries. Such devices include personalcomputers (“PC”), digital cellular phones, personal digital assistants(“PDA”), game consoles, set-top boxes, etc. Each of these devices mayhave a different software program, known as a personal informationmanager (“PIM”), for the management of e-mail and personal informationitems.

Many of the PIM programs on the user's devices may support the “roaming”of e-mail across multiple devices. In other words, the user's e-mail maybe stored in a standard format in a central location and replicated tothe PIM on multiple of the user's devices. In this way, changes made tothe e-mail on one device, such as deleting a message or marking amessage as read, may be replicated to the user's other devices.Traditionally, however, a PIM maintains other personal information itemsfor the user in a local storage, often using native formats specific tothe individual PIM program. Changes made to a personal information item,such as a contact or task, on one device may be isolated to that deviceand unavailable to the user's other devices. While some server programsmay exist that allow roaming of personal information items acrossdevices, these servers often use proprietary protocols and may belimited to access by a specific client application.

It is with respect to these considerations and others that thedisclosure made herein is presented.

SUMMARY

Technologies are described herein for roaming personal information itemsacross multiple computing devices using an Internet message accessprotocol (“IMAP”) server. According to this description, when a changeis detected to a personal information item maintained by a PIM programexecuting on one computing device, the data representing the personalinformation item is uploaded to an IMAP server where it is stored as amessage in a user mailbox designated to hold personal information items.A second computing device then downloads the message storing the datarepresenting the personal information item from the IMAP server andmakes it available to a PIM program executing on the second computingdevice.

It should be appreciated that the above-described subject matter may beimplemented as a computer-controlled apparatus, a computer process, acomputing system, or as an article of manufacture such as acomputer-readable medium. These and various other features will beapparent from a reading of the following Detailed Description and areview of the associated drawings.

This Summary is provided to introduce a selection of concepts in asimplified form that are further described below in the DetailedDescription. This Summary is not intended to identify key features oressential features of the claimed subject matter, nor is it intendedthat this Summary be used to limit the scope of the claimed subjectmatter. Furthermore, the claimed subject matter is not limited toimplementations that solve any or all disadvantages noted in any part ofthis disclosure.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram showing aspects of an illustrative operatingenvironment and several software components provided by the embodimentspresented herein;

FIG. 2 is a block diagram showing further details of the server mailboxstorage, according to embodiments described herein;

FIG. 3 is a flow diagram showing methods for replicating new or modifiedpersonal information items from a local information cache of a PIMprogram to an IMAP server, according to embodiments described herein;

FIG. 4 is a flow diagram showing methods for updating a localinformation cache of a PIM program with changes to personal informationitems from an IMAP server, according to embodiments described herein;and

FIG. 5 is a block diagram showing illustrative computer hardware andsoftware architectures for a computing system capable of implementingaspects of the embodiments presented herein.

DETAILED DESCRIPTION

The following detailed description is directed to technologies forroaming personal information items for a user across multiple PIMprograms on multiple computing devices utilizing an IMAP server.Utilizing the technologies described herein, a PIM executing on one of auser's devices can add or change a personal information item maintainedin the local storage of the device, and replicate those changes to anycentralized mail server on the Internet supporting IMAP. The PIMs on theuser's other devices can then periodically synchronize their localstorage of personal information items with that of the centralized mailserver, thus making the changes made to personal information items onone device available to the other devices of the user.

While the subject matter described herein is presented in the generalcontext of program modules that execute in conjunction with theexecution of an operating system and application programs on a computersystem, those skilled in the art will recognize that otherimplementations may be performed in combination with other types ofprogram modules. Generally, program modules include routines, programs,components, data structures, and other types of structures that performparticular tasks or implement particular abstract data types. Moreover,those skilled in the art will appreciate that the subject matterdescribed herein may be practiced with other computer systemconfigurations, including hand-held devices, multiprocessor systems,microprocessor-based or programmable consumer electronics,minicomputers, mainframe computers, and the like.

In the following detailed description, references are made to theaccompanying drawings that form a part hereof, and that show, by way ofillustration, specific embodiments or examples. In the accompanyingdrawings, like numerals represent like elements through the severalfigures.

FIG. 1 shows an illustrative operating environment 100 including severalsoftware components for roaming personal information items betweenmultiple computing devices using an IMAP server, according toembodiments provided herein. The environment 100 includes any number ofcomputing devices 102A-102D (referred to herein generally as computingdevice(s) 102) that may be utilized by a user to access and maintain theuser's e-mail and/or personal information items. The computing device102 may be a PC, a digital cellular phone, a PDA, a game console, aset-top box, a Web server hosting a Web-based application program, orany other computing device.

The computing device 102 executes a PIM program 104. The PIM program 104may be an application program that allows the user to maintain theuser's e-mail and personal information items, such as contacts, tasks,calendar items, notes, and journal entries, through a single, unifiedinterface. Examples of the PIM program may include, but are not limitedto, the MICROSOFT® OUTLOOK® messaging and collaboration client fromMicrosoft Corporation of Redmond, Wash., or the IBM® LOTUS® NOTES®client program from IBM Corporation of Armonk, N.Y. The PIM program 104may also be a special purpose program that allows the user to maintain asubset of the user's personal information items, such as the Contacts orCalendar applications on the APPLE® IPHONE™ mobile digital device fromApple Inc. of Cupertino, Calif. Further, the PIM program 104 may be aWeb-based application executing on a Web server that provides a useraccess to one or more of the user's personal information items, such asthe GOOGLE CALENDAR™ calendaring service from Google, Inc. of MountainView, Calif.

The PIM program 104 may maintain a copy of the user's personalinformation items in a local information cache 106, located on thecomputing device 102 or on an external file system connected to thecomputing device. The format of the personal information items stored inthe local information cache may be native to the specific PIM program104 executing on the computing device 102.

According to embodiments described herein, the PIM program 104 uses anIMAP client extension 108 to roam personal information items acrossmultiple of the user's computing devices. In other words, through theIMAP client extension 108, additions, deletions, and modifications madeto personal information items made on one of the user's computingdevices 120A may be reflected on the user's other devices 102B-102D. TheIMAP client extension 108 may be a module contained in the PIM program104, or it may be an external component located on the computing device102 that provides services to the PIM program through an applicationprogramming interface (“API”). The IMAP client extension 108communicates over an IP network 110 to an IMAP server 112 executing on amail server computer 114 or other server computer, network appliance, orspecial-purpose computing device connected to the IP network. The IPnetwork 110 may be the Internet, a local area network (“LAN”), or awide-area network (“WAN”).

As will be appreciated by one skilled in the art, the IMAP server 112allows computing devices 102A-102D to access messages across the IPnetwork 110 through the Internet message access protocol version 4(“IMAPv4”). IMAPv4 is an open standard for the manipulation of e-mailmessages on a remote server over the Internet. IMAPv4 is supported bythe majority of mail server programs on the Internet, and is defined inInternet Engineering Task Force (“IETF”) RFC 3501 entitled “InternetMessage Access Protocol—Version 4rev1,” which is incorporated herein byreference in its entirety. Examples of mail server programs that supportIMAPv4 include the MICROSOFT® EXCHANGE SERVER 2007 server program fromMicrosoft Corporation, IBM® LOTUS® DOMINO® server from IBM Corporation,or EUDORA® WORLDMAIL 4 server from QUALCOMM Incorporated of San Diego,Calif.

The IMAP server 112 may maintain the messages for the user in a servermailbox store 116, located on the mail server computer 114 or some otherfile system or storage mechanism connected to the mail server computer.As shown in FIG. 2, the information in the server mailbox store 116, asdefined by the IMAPv4 protocol, is divided into individual usermailboxes 202. IMAP client programs, such as the IMAP client extension108, may utilize commands defined by the IMAPv4 protocol to create,delete, and enumerate the user mailboxes 202 on the IMAP server 112 foran individual user.

Any number of user mailboxes 202 may be created, each with a uniquemailbox name 204. Some mailbox names may be reserved by the IMAPv4protocol specifically for e-mail messages, such as the mailbox name“INBOX.” According to embodiments herein, the IMAP client extension 108,executing in conjunction with a PIM program 104 on one of the user'scomputing devices 102A, may create an individual user mailbox 202 in theserver mailbox store 116 of the IMAP server 112 for each type ofpersonal information item that the PIM program maintains, as will bediscussed in more detail below with respect to FIG. 3.

The user mailboxes 202 in the server mailbox store 116 may contain oneor more messages 206. The messages 206 may contain e-mail messagesreceived for the user by the mail server computer 114, or the messagesmay contain personal information items associated with the user mailbox202 that are created or modified by the PIM program 104 and replicatedto the IMAP server 112 by the IMAP client extension 108, as will befurther discussed below with respect to FIG. 3. According to the IMAPv4protocol, an individual message 206 in a user mailbox 202 has a uniqueidentifier 208. The unique identifier 208 is unique across the specificuser mailbox 202 and serves to uniquely identify the individual message206 to IMAP client programs, such as the IMAP client extension 108,accessing the IMAP server 112.

A message 206 also contains one or more attributes 210. The attributes210 define properties of the message 206 that are utilized by the IMAPserver 112 and IMAP client programs to manage the messages contained inthe user mailboxes 202. Attributes 210 may include the date and timethat the message 206 was received, a set of flags that indicate whetherthe message is new, has been read, or is marked for deletion, the sizeof the message, and other message properties as defined in the IMAPv4protocol.

The contents of a message 206 are stored in a message text 212 field.The message text 212 may include any text content for the message,although the IMAPv4 protocol recommends that the message text 212 beconsistent with IETF RFC 2822 entitled “Internet Message Format.”Messages in the Internet message format may include a message header, abody, and one or more “file attachments.” According to one embodiment,the IMAP client extension 108 replicates personal information itemsmaintained in the PIM program 104 to the IMAP server 112 as IMAPmessages 206 with an RFC 2822 compliant message text 212. The messagetext 212 of the message 206 contains the data representing the personalinformation item serialized into the body of the message or attached asa file attachment, as will be discussed in more detail below withrespect to FIG. 3.

Referring now to FIGS. 3 and 4, additional details will be providedregarding the embodiments presented herein. It should be appreciatedthat the logical operations described with respect to FIGS. 3 and 4 areimplemented (1) as a sequence of computer implemented acts or programmodules running on a computing system and/or (2) as interconnectedmachine logic circuits or circuit modules within the computing system.The implementation is a matter of choice dependent on the performanceand other requirements of the computing system. Accordingly, the logicaloperations described herein are referred to variously as operations,structural devices, acts, or modules. These operations, structuraldevices, acts, and modules may be implemented in software, in firmware,in special purpose digital logic, and any combination thereof. It shouldalso be appreciated that more or fewer operations may be performed thanshown in the figures and described herein. The operations may also beperformed in a different order than described.

FIG. 3 illustrates a routine 300 for replicating new or modifiedpersonal information items to an IMAP server 112, utilizing the IMAPclient extension 108 described above. The routine 300 begins atoperation 302, where the IMAP client extension 108 detects that apersonal information item maintained by the PIM program 104 has beencreated or modified in the local information cache 106. This may beaccomplished by the IMAP client extension 108 monitoring the localinformation cache 106 for changes, or the IMAP client extension may beinformed by the PIM program 104 that a personal information item haschanged via a call to an API.

Upon detecting a change to a personal information item, the routineproceeds from operation 302 to operation 304, where the IMAP clientextension 108 establishes a connection with the IMAP server 112 over theIP network 110. In one embodiment, the IMAP client extension 108 maymaintain an active connection to the IMAP server 112 during theexecution of the PIM program 104. This is often referred to as“connected mode” or “working online.” In another embodiment, the IMAPclient extension 108 may establish a connection to the IMAP server 112when a personal information item has been modified in the localinformation cache 106 and is to be replicated to the IMAP server 112. Ina further embodiment, the IMAP client extension 108 may establish aconnection to the IMAP server 112 on a periodic basis, such as uponinitial execution and termination of the PIM program 104, at regularlyestablished intervals, or in response to a user action, such as theclick of a “Refresh” button. This may be referred to as “offline mode.”When working in this mode, modified personal information items may bemarked as modified and replicated to the IMAP sever 112 when theconnection is established.

From operation 304, the routine 300 proceeds to operation 306, where theIMAP client extension 108 selects the user mailbox 202 on the IMAPserver 112 corresponding to the type of the personal information item tobe replicated to the server. According to one embodiment, the IMAPclient extension 108 may create and maintain an individual user mailbox202 on the IMAP server 112 corresponding to the different personalinformation types maintained by the PIM program 104. The user mailbox202 may have a specific mailbox name 204 associated with the type ofpersonal information item. For example, calendar items may be maintainedin a user mailbox 202 with a mailbox name 204 of “x_calendar,” whilecontacts may be maintained in a user mailbox with a mailbox name 204 of“x_contacts.” The specific mailbox names 204 used for the user mailboxes202 may be implementation specific, or based on a standard establishedsuch that PIM programs 104 from different vendors incorporating the IMAPclient extension functionality described herein can share personalinformation items through the IMAP server 112.

In another embodiment, the type of personal information items stored inthe user mailbox 202 may be contained in a type-identifying messagewithin each user mailbox maintained by the IMAP client extension 108.The type-identifying message may be established in such a way that it isreadily accessible to the IMAP client extension 108, such as positionedso that it is generally returned as the message with a sequence numberof 1 in a list of messages in the user mailbox 202. The type of personalinformation item may be encoded into the message text 212 of thetype-identifying message, along with other information, such as theformat in which data representing the personal information item isencoded, and other application-specific settings. PIM programs 104incorporating the IMAP client extension functionality described hereinmay enumerate the user mailboxes 202 on the IMAP server 112 and accessthe type-identifying message at sequence number 1 to discover the typeof personal information item contained in each user mailbox.

It will be appreciated that any number of methods may be employed by theIMAP client extension 108 to identify the user mailbox 202 that isassociated with a particular type of personal information item,including configuring user-definable settings in the PIM program 104,using namespaces on the IMAP server 112, creating an additional usermailbox on the IMAP server containing application settings for the IMAPclient extension 108 and/or PIM program 104, or the like. It is intendedthat this application include all such methods for identifying the usermailbox 202 associated with a particular type of personal informationitem.

In one embodiment, the IMAP client extension 108 selects the usermailbox 202 associated with the type of personal information item to bereplicated using the IMAPv4 “SELECT” command. If the user mailbox 202does not yet exist on the IMAP server 112, as determined in operation308, then the routine 300 moves to operation 310, where the IMAP clientextension 108 creates the user mailbox on the IMAP server. The IMAPclient extension 108 may create the user mailbox 202 using the IMAPv4“CREATE” command. The IMAP client extension 108 may then associate thecreated user mailbox 202 with the type of personal information items tobe stored therein by setting the mailbox name 204 of the user mailboxand/or creating the type-identifying message in the user mailbox,depending on the specific implementation chosen, as discussed in regardto operation 306. According to one embodiment, the IMAP client extension108 may create the user mailboxes 202 on the IMAP server for thedifferent types of personal information item maintained by the PIMprogram 104 upon the initial connection to the IMAP server 112, duringconfiguration of the IMAP client extension, for example.

Next, the routine 300 moves to operation 312, where the IMAP clientextension 108 converts the data representing the personal informationitem from the native format of the PIM program 104 to the format thatwill be used to store the type of personal information items in theassociated user mailbox 202. As described briefly above, the IMAP clientextension 108 may store individual personal information items asmessages 206 in the user mailbox 202 associated with the type of thepersonal information item. The data representing the personalinformation item may be serialized into the body of the message text 212of the message 206, or it may be encoded as a file attachment to themessage based on a specific format or MIME content type. The choice ofmethod for converting the data representing the personal informationitem may vary with the individual PIM program's implementation of theIMAP client extension functionality.

According to one embodiment, the IMAP client extension 108 may use adifferent method of converting the data representing the personalinformation item, depending on the type of the personal informationitem. For example, calendar items, tasks, and journal entries may bestored as file attachments encoded in an iCalendar format, as defined byIETF RFC 2445 entitled “Internet Calendaring and Scheduling Core ObjectSpecification (iCalendar).” Calendar items may be encoded using theiCalendar VEVENT format, tasks may be encoded using the iCalendar VTODOformat, and journal entries may be encoded using the iCalendar VJOURNALformat. Contacts may be stored as file attachments encoded in the widelysupported vCard format, while notes may be serialized as text, XML, orHTML into the body of the message 206.

In another embodiment, in addition to the file attachment containing thedata representing the personal information item, additional informationregarding the personal information item may be encoded into the body ofthe message 206 to enable PIM programs 104 not incorporating the IMAPclient extension functionality described herein to display someinformation regarding the personal information item. For example, for acontact, the contact's name, phone numbers, and e-mail addresses may beencoded into the body of the message 206 that also contains the vCardformat file attachment.

From operation 312, the routine 300 proceeds to operation 314, where theIMAP client extension 108 creates a new message 206 in the user mailbox202 associated with the type of the personal information item to bereplicated. The IMAP client extension 108 may create the new message 206in the user mailbox 202 using the IMAPv4 “APPEND” command, according toone embodiment. The message text 212 of the new message 206 may containthe converted data representing the personal information item, asdescribed above in regard to operation 312. For example, the messagetext 212 may contain an RFC 2822 compliant message with the bodyinformation and/or file attachments encoded with the formatcorresponding to the type of personal information item, as describedabove.

The routine 300 then proceeds from operation 314 to operation 316, wherethe IMAP client extension 108 determines if the personal informationitem was previously stored on the IMAP server 112. This may be the casewhen an existing personal information item has been modified by PIMprogram 104 in the local information cache 106. The PIM program 104 maymaintain this information by storing the unique identifier 208 for themessage 206 on the IMAP server 112 corresponding to the replicatedpersonal information items in the local information cache 106. If thepersonal information item was previously stored on the IMAP server 112,the routine 300 proceeds to operation 318 where the IMAP clientextension 108 marks the previously stored message 206 for deletion. Thismay be done by setting an attribute 210 on the message 206, for example.From operation 318, the routine 300 ends.

In another embodiment, the IMAP client extension 108 may implement amore robust change detection strategy in which the IMAP client extensionchecks for conflicting or overlapping changes to a personal informationitem before the item is replicated to the IMAP server 112. This mayallow the IMAP client extension 108 to account for a situation where thesame personal information item is changed by two different usercomputing devices 102 before the changed item from the first device hasbeen synchronized to the second device. In this case, the IMAP clientextension 108 on the second device may detect the changed personalinformation item from the first device on the IMAP server 112, andattempt to merge the two sets of changes before replicating the changeditem back to the IMAP server.

FIG. 4 illustrates a routine 400 for updating a PIM program's localinformation cache 106 with changed personal information items from theIMAP server 112, utilizing the IMAP client extension 108 describedabove. According to one embodiment, the IMAP client extension 108 mayuse the routine 400 to poll the IMAP server 112 for changes to personalinformation items stored on the IMAP server. The routine 400 may beperformed on a periodic basis by the IMAP client extension 108, or theroutine may be performed once upon initial startup of the PIM program104. The implementation is a matter of choice, and may be configurableby a user of the PIM program 104. The routine 400 begins at operation402, where the IMAP client extension 108 establishes a connection withthe IMAP server 112 over the IP network 110. As described above inregard to operation 304, the IMAP client extension 108 may maintain aconnection to the IMAP server 112 during the execution of the PIMprogram 104, or it may establish a connection to the IMAP server on aperiodic basis.

Upon connecting to the IMAP server 112, the routine 400 proceeds fromoperation 402 to operation 404, where the IMAP client extension 108enumerates the user mailboxes 202 on the IMAP server that containpersonal information items maintained by the PIM program 104. In oneembodiment, the IMAP client extension 108 may use the IMAPv4 “LIST”command to list the user mailboxes 202 for the user on the IMAP server112 and discover the type of personal information items contained in themailboxes. For example, the IMAP client extension 108 may reference thetype-identifying messages contained in the different user mailboxes 202,as discussed above in regard to operation 306. In another embodiment,the IMAP client extension 108 may iterate through the known mailboxnames 204 of the user mailboxes 202 containing personal informationitems.

Next at operation 406, the IMAP client extension 108 determines if alluser mailboxes 202 on the IMAP server 112 enumerated in operation 404have been synchronized, in other words, whether all the changed messages206 in the user mailboxes containing personal information itemsmaintained by the PIM program 104 have been updated in the localinformation cache 106. If not all of the user mailboxes 212 enumeratedin operation 404 have been synchronized, then the routine 400 proceedsfrom operation 406 to operation 408, where the IMAP client extension 108selects the next user mailbox on the IMAP server 112. According to oneembodiment, the IMAP client extension 108 may select the user mailbox202 using the IMAPv4 “SELECT” command

Once the mailbox is selected, the routine 400 proceeds from operation408 to operation 410, where the IMAP client extension 108 determineswhether any messages 206 containing personal information items have beendeleted from the user mailbox 202. This may be done by enumerating theunique identifiers 208 of the messages 206 stored in the user mailbox202 and comparing them with the unique identifiers maintained with thepersonal information items in the local information cache 106. If amessage 206 in the user mailbox 202 corresponding to a personalinformation item in the local information cache 106 is marked fordeletion, or if a message 206 corresponding to a personal informationitem no longer exists in the user mailbox, the routine 400 proceeds fromoperation 410 to operation 412. In operation 412, the IMAP clientextension 108 removes the corresponding personal information item fromthe local information cache.

From operation 412, the routine 400 returns to operation 410, where theIMAP client extension 108 determines if any additional messages 206containing personal information items have been deleted from the usermailbox 202. If no more messages 206 containing personal informationitems have been deleted, the routine 400 proceeds from operation 410 tooperation 414, where the IMAP client extension 108 determines if anymessages 206 containing personal information items have been added tothe user mailbox 202. As in operation 410, this may be accomplished byenumerating the unique identifiers 208 of the messages 206 stored in theuser mailbox 202 and comparing them with the unique identifiersmaintained with the personal information items in the local informationcache 106. If a new message 206 exists in the user mailbox 202containing a personal information item, the routine 400 proceeds fromoperation 414 to operation 416, where the IMAP client extension 108retrieves the new message containing the personal information item fromthe IMAP server 112.

From operation 416, the routine 400 proceeds to operation 418, where theIMAP client extension 108 converts the data representing the personalinformation item from the format stored in the IMAP message 206 to thenative format of the PIM program 104. As discussed above in regard tooperation 312, the data for the personal information item may beserialized into the body of the message text 212 of the new message 206,or it may be encoded as a file attachment to the message based on aspecific format or MIME content type. The IMAP client extension 108 mayextract the data from the message text 212 of the message 206accordingly, and convert it to the native format of the PIM program 104for storage in the local information cache 106.

The routine 400 then proceeds from operation 418 to operation 420, wherethe IMAP client extension 108 stores the personal information item fromthe new message 206 in the local information cache 106 in the formatnative to the PIM program 104. Next, the routine 400 returns tooperation 414, where the IMAP client extension 108 determines if anyadditional messages 206 containing personal information items have beenadded to the user mailbox 202. If no more new messages 206 exist in theuser mailbox 202, the routine 400 returns to operation 406, where theIMAP client extension 108 determines if all user mailboxes 202 on theIMAP server 112 enumerated in operation 404 have been synchronized. Onceall the user mailboxes 202 containing personal information items on theIMAP server 112 have been synchronized, the routine 400 ends.

According to another embodiment, the IMAP server 112 may notify the IMAPclient extension 108 of deleted or added messages 206 in a user mailbox202 containing personal information items maintained by the PIM program104. This may be accomplished by the IMAP client extension 108 receivingfrom the IMAP server 112 “IDLE” responses that contain statusinformation of the currently selected user mailbox 202, as defined bythe IMAPv4 protocol. Because the IMAP server 112 typically providesnotifications with status information only regarding the currentlyselected user mailbox 202, the IMAP client extension 108 may establish aseparate connection with the IMAP server 112 for the different usermailboxes 202 containing personal information items. The IMAP clientextension 108 may then select the corresponding user mailbox 202 in theIMAP session for each connection in order to receive changenotifications for messages 206 contained in that user mailbox.

When the IMAP client extension 108 receives a notification of a deletedmessage 206 in a user mailbox 202 containing personal information itemsmaintained by the PIM program 104, the IMAP client extension 108 maythen remove the corresponding personal information item from the localinformation cache 106, as described above in regard to operation 412.Similarly, when the IMAP client extension 108 receives a notification ofa new message 206 added to a user mailbox 202 containing personalinformation items, the IMAP client extension 108 may retrieve the newmessage, convert the data for the personal information item to thenative format of the PIM program 104, and store the personal informationitem from the new message 206 in the local information cache 106, asdescribed above in regard to operations 416, 418, and 420.

It will be appreciated by one skilled in the art that methods forreplicating new or modified personal information items from the localinformation cache 106 to the IMAP server 112 and updating the localinformation cache with changes to personal information items from theIMAP server may be utilized other than those described above in regardto FIGS. 3 and 4. These other methods may further utilize differentcommands, facilities, interfaces, or capabilities of the IMAPv4 protocolthan those described herein. It is intended that all such methods beincluded in this application.

FIG. 5 shows an example computer architecture for computers 500 capableof executing the software components described herein for roamingpersonal information items across multiple computing devices utilizingan IMAP server, in the manner presented above. The computer architectureshown in FIG. 5 illustrates a conventional computing device, PDA,digital cellular phone, communication device, desktop computer, laptop,or server computer and may be utilized to execute any aspects of thesoftware components presented herein described as executing on thecomputing device 102, the mail server computer 114, or other computingplatform.

The computer architecture shown in FIG. 5 includes a central processingunit 502 (CPU), a system memory 508, including a random access memory514 (RAM) and a read-only memory 516 (ROM), and a system bus 504 thatcouples the memory to the CPU 502. A basic input/output systemcontaining the basic routines that help to transfer information betweenelements within the computer 500, such as during startup, is stored inthe ROM 516. The computer 500 also includes a mass storage device 510for storing an operating system 518, application programs, and otherprogram modules, which are described in greater detail herein.

The mass storage device 510 is connected to the CPU 502 through a massstorage controller (not shown) connected to the bus 504. The massstorage device 510 and its associated computer-readable media providenon-volatile storage for the computer 500. Although the description ofcomputer-readable media contained herein refers to a mass storagedevice, such as a hard disk or CD-ROM drive, it should be appreciated bythose skilled in the art that computer-readable media can be anyavailable computer storage media that can be accessed by the computer500.

By way of example, and not limitation, computer-readable media mayinclude volatile and non-volatile, removable and non-removable mediaimplemented in any method or technology for storage of information suchas computer-readable instructions, data structures, program modules, orother data. For example, computer-readable media includes, but is notlimited to, RAM, ROM, EPROM, EEPROM, flash memory or other solid statememory technology, CD-ROM, digital versatile disks (DVD), HD-DVD,BLU-RAY, or other optical storage, magnetic cassettes, magnetic tape,magnetic disk storage or other magnetic storage devices, or any othermedium that can be used to store the desired information and that can beaccessed by the computer 500.

According to various embodiments, the computer 500 may operate in anetworked environment using logical connections to remote computersthrough a network, such as the IP network 110. The computer 500 mayconnect to the IP network 110 through a network interface unit 506connected to the bus 504. It should be appreciated that the networkinterface unit 506 may also be utilized to connect to other types ofnetworks and remote computer systems. The computer 500 may also includean input/output controller 512 for receiving and processing input from anumber of other devices, including a keyboard, a mouse, or an electronicstylus (not shown in FIG. 5). Similarly, the input/output controller 512may provide output to a display, a printer, or other type of outputdevice (also not shown in FIG. 5).

As mentioned briefly above, a number of program modules and data filesmay be stored in the mass storage device 510 and RAM 514 of the computer500, including an operating system 518 suitable for controlling theoperation of a computer. The mass storage device 510 and RAM 514 mayalso store one or more program modules. In particular, the mass storagedevice 510 and the RAM 514 may store the PIM program 104, the IMAPclient extension 108, or the IMAP server 112, each of which wasdescribed in detail above in regard to FIG. 1. The mass storage device510 and the RAM 514 may also store other types of program modules ordata.

Based on the foregoing, it should be appreciated that technologies forroaming personal information items across multiple computing devicesutilizing an IMAP server are provided herein. Although the subjectmatter presented herein has been described in language specific tocomputer structural features, methodological acts, and computer-readablemedia, it is to be understood that the invention defined in the appendedclaims is not necessarily limited to the specific features, acts, ormedia described herein. Rather, the specific features, acts, and mediumsare disclosed as example forms of implementing the claims.

The subject matter described above is provided by way of illustrationonly and should not be construed as limiting. Various modifications andchanges may be made to the subject matter described herein withoutfollowing the example embodiments and applications illustrated anddescribed, and without departing from the true spirit and scope of thepresent invention, which is set forth in the following claims.

1. A computer-implemented method for roaming personal information itemsacross multiple computing devices using an Internet Message AccessProtocol (“IMAP”) server, the method comprising: receiving datarepresenting a personal information item from a PIM program executing ona first computing device; utilizing the IMAP protocol to upload the datarepresenting the personal information item from the first computingdevice to the IMAP server, wherein the data representing the personalinformation item is stored as a message in a user mailbox designated tohold personal information items on the IMAP server; at a secondcomputing device, utilizing the IMAP protocol to download the datarepresenting the personal information item from the message in the usermailbox from the IMAP server to the second computing device; andproviding the data representing the personal information item to a PIMprogram executing on the second computing device.
 2. The method of claim1, wherein the personal information item comprises one of a calendaritem, a contact, a task, a note, and a journal entry.
 3. The method ofclaim 1, wherein the message storing the data representing the personalinformation item comprises a message in the Internet Message Format, andwherein the data representing the personal information item is encodedas a file attachment to the message.
 4. The method of claim 1, whereinreceiving the data representing the personal information item from thePIM program executing on the first computing device comprises detectinga change to a personal information item in a local information cache ofthe PIM program on the first computing device.
 5. The method of claim 4,further comprising: upon detecting the change to the personalinformation item, converting the data representing the personalinformation item from a first format of the data stored in the localinformation cache to a second format for storage on the IMAP server. 6.The method of claim 5, wherein providing the data representing thepersonal information item to the PIM program executing on the secondcomputing device comprises storing the data representing the personalinformation item in a local information cache of the PIM program on thesecond computing device.
 7. The method of claim 6, further comprising:upon downloading the data representing the personal information item,converting the data representing the personal information from thesecond format of the data stored in the message on the IMAP server to athird format for storage in the local information cache of the PIMprogram executing on the second computing device.
 8. The method of claim1, further comprising: utilizing the IMAP protocol to create a usermailbox on the IMAP server designated to hold messages storing datarepresenting personal information items of a particular type.
 9. Themethod of claim 8, wherein designating the user mailbox on the IMAPserver to hold messages storing data representing personal informationitems of the particular type comprises storing a type-identifyingmessage within the user mailbox.
 10. A system for roaming personalinformation items across multiple computing devices using an InternetMessage Access Protocol (“IMAP”) server, the system comprising: a firstcomputing device comprising a processor and a memory; a PIM programstored in the memory and executing on the processor of the firstcomputing device and operative to maintain personal information items ina local information cache on the first computing device; and an IMAPclient extension module stored in the memory and executing on theprocessor of the first computing device and operative to detect achanged personal information item maintained by the PIM program, andutilize the IMAP protocol to upload data representing the changedpersonal information item from the first computing device to the IMAPserver, wherein the data representing the changed personal informationitem is stored as a message in a user mailbox designated to holdpersonal information items on the IMAP server, and wherein the messagein the user mailbox containing the data representing the changedpersonal information item is downloaded through the IMAP protocol by asecond computing device and provided to a PIM program executing on thesecond computing device.
 11. The system of claim 10, wherein the changedpersonal information item comprises one of a calendar item, a contact, atask, a note, and a journal entry.
 12. The system of claim 10, whereinthe message storing the data representing the changed personalinformation item comprises a message in the Internet Message Format, andwherein the data representing the changed personal information item isencoded as a file attachment to the message.
 13. The system of claim 10,wherein the IMAP client extension module is further operative to: upondetecting the changed personal information item, convert the datarepresenting the changed personal information item from a first formatof the data stored in the local information cache to a second format forstorage on the IMAP server.
 14. The system of claim 13, whereinproviding the data representing the changed personal information item tothe PIM program executing on the second computing device comprises:converting the data representing the changed personal information fromthe second format of the data stored in the message on the IMAP serverto a third format for storage in a local information cache of the PIMprogram executing on the second computing device; and storing the datarepresenting the changed personal information item in the localinformation cache of the PIM program on the second computing device. 15.The system of claim 10, wherein the IMAP client extension module isfurther operative to utilize the IMAP protocol to create a user mailboxon the IMAP server designated to hold messages storing data representingpersonal information items of a particular type.
 16. The system of claim15, wherein designating the user mailbox on the IMAP server to holdmessages storing data representing personal information items of theparticular type comprises naming the user mailbox with a mailbox namecorresponding to the particular type.
 17. A computer-readable storagemedium that is not a signal, the medium having computer executableinstructions stored thereon that, when executed by a computing device,cause the computing device to: receive data representing a firstpersonal information item from a PIM program executing on the computingdevice; convert the data representing the first personal informationitem from a first format native to the PIM program to a second formatfor storage as a message on an Internet Message Access Protocol (“IMAP”)server; utilize the IMAP protocol to append the message storing the datarepresenting the first personal information item to a user mailboxdesignated to hold personal information items on the IMAP server; detecta new message in the user mailbox on the IMAP server, the new messagestoring data representing a second personal information item in thesecond format; utilize the IMAP protocol to request the new message fromthe IMAP server; receive the new message at the computing device;extract the data representing the second personal information item fromthe new message; convert the data representing the second personalinformation item from the second format to the first format native tothe PIM program; and provide the data representing the second personalinformation item to the PIM program.
 18. The computer-readable storagemedium of claim 17, wherein the personal information items consistessentially of one or more of a calendar item, a contact, a task, anote, and a journal entry.
 19. The computer-readable storage medium ofclaim 17, wherein the messages storing the data representing the firstand second personal information items comprise messages in the InternetMessage Format, and wherein the data representing the first and secondpersonal information items are encoded as a file attachments to themessages.
 20. The computer-readable storage medium of claim 17, whereinproviding the data representing the second personal information item tothe PIM program comprises storing the data representing the secondpersonal information item in a local information cache of the PIMprogram on the computing device.